package com.example.mysql.学习笔记.高级.数据库的优化之索引.数据库的设计规范之范式;

public class ER模型 {
}
/**
 * ER模型
 * 数据库设计是牵一发而动全身的。 那有没有什么办法提前看到数据库的全貌呢?
 * 比如需要哪些数据表、数据表中应该有哪些字段，
 * 数据表与数据表之间有什么关系、通过什么字段进行连接，等等。
 * 这样我们才能进行整体的梳理和设计。
 * 其实，ER模型就是一个这样的工具。
 * ER 模型也叫作实体关系模型，是用来描述现实生活中客观存在的事物、事物的属性，
 * 以及事物之间关系的一种数据模型。
 * 在开发基于数据库的信息系统的设计阶段,通常使用ER模型来描述信息需求和信息特性，
 * 帮助我们理清业务逻辑，从而设计出优秀的数据库。
 *
 */
/**
 * 8.1 ER模型包括哪些要素?
 * ER模型中有三个要素， 分别是    实体、属性和关系。
 * 实体，可以看做是数据对象，往往对应于现实生活中的真实存在的个体。
 * 在ER模型中，用矩形来表示。实体分为两类，分别是强实体和弱实体。
 * 强实体是指不依赖于其他实体的实体;
 * 弱实体是指对另一个实体有很强的依赖关系的实体。
 *
 * 属性，则是指实体的特性。比如超市的地址、联系电话、员工数等。
 *      在ER模型中用椭圆形来表示。
 * 关系，则是指实体之间的联系。比如超市把商品卖给顾客,就是一种超市与顾客之间的联系。
 *      在ER模型中用菱形来表示。
 * 注意:实体和属性不容易区分。
 * 这里提供一个原则:
 *      我们要从系统整体的角度出发去看，   可以独立存在的是实体，不可再分的是属性。
 *      也就是说，属性不能包含其他属性。
 * 8.2关系的类型
 * 在ER模型的3个要素中，关系又可以分为3种类型，分别是一对一、一对多,多对多。
 *
 * 8.3建模分析
 * ER模型看起来比较麻烦,但是对我们把控项目整体非常重要。如果你只是开发一个小应用，或许简单设计几个表
 * 够用了，一旦要设计有一定规模的应用， 在项目的初始阶段,建立完整的ER模型就非常关键了。开发应用项目
 * 的实质，实就是建模。
 *
 * 8.5 ER模型图转换成数据表
 * 通过绘制ER模型，我们已经理清了业务逻辑，现在,我们就要进行非常重要的一步了:把绘制好的ER模型,转
 * 换成具体的数据表，下面绍下转换的原则:
 * (1) 一个实体通常转换成一 个数据表;
 * (2) -个多对多的关系，通常也转换成一 个数据表;
 * (3)一个1对1,或者1对多的关系，往往通过表的外键来表达，而不是设计一个新的数据表; .
 * (4)属性转换成表的字段。
 * 下面结合前面的ER模型，具体讲解一下怎么 运用这些转换的原则，把ER模型转换成具体的数据表，从而把抽象
 * 出来的数据模型，落实到具体的数据库设计当中。I
 *
 *
 * 外键约束
 * 主要是在数据库层面上保证数据的一致性，但是因为插入和更新数据需要检查外键，
 * 理论上性能会有所下降，对性能是负面的影响。
 * 实际的项目，不建议使用外键，--方面是降低开发的复杂度(有外键的话主 从表类的操作必须先操作主表)，
 * 另外是有外键在处理数据的时候非常麻烦。
 * 在电商平台，由于并发业务量比较大，所以一般不设置外键，以免影响数据库性能。
 * 在应用层面做数据的一致性检查 ，本来就是一个正常的功能需求。............
 * 如学生选课的场景，课程肯定不是输入的，
 * 而是通过下拉或查找等方式从系统中进行选取，
 * 就能够保证是合法的课程ID,因此就不需要靠数据库的外键来检查
 *
 *
 *
 *
 */
